﻿/*
 Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
 */
(function () {
    function b(a, b, c) {
        var k = n[this.id];
        if (k)for (var f = this instanceof CKEDITOR.ui.dialog.checkbox, e = 0; e < k.length; e++) {
            var d = k[e];
            switch (d.type) {
                case g:
                    if (!a)continue;
                    if (null !== a.getAttribute(d.name)) {
                        a = a.getAttribute(d.name);
                        f ? this.setValue("true" == a.toLowerCase()) : this.setValue(a);
                        return
                    }
                    f && this.setValue(!!d["default"]);
                    break;
                case o:
                    if (!a)continue;
                    if (d.name in c) {
                        a = c[d.name];
                        f ? this.setValue("true" == a.toLowerCase()) : this.setValue(a);
                        return
                    }
                    f && this.setValue(!!d["default"]);
                    break;
                case i:
                    if (!b)continue;
                    if (b.getAttribute(d.name)) {
                        a = b.getAttribute(d.name);
                        f ? this.setValue("true" == a.toLowerCase()) : this.setValue(a);
                        return
                    }
                    f && this.setValue(!!d["default"])
            }
        }
    }

    function c(a, b, c) {
        var k = n[this.id];
        if (k)for (var f = "" === this.getValue(), e = this instanceof CKEDITOR.ui.dialog.checkbox, d = 0; d < k.length; d++) {
            var h = k[d];
            switch (h.type) {
                case g:
                    if (!a || "data" == h.name && b && !a.hasAttribute("data"))continue;
                    var l = this.getValue();
                    f || e && l === h["default"] ? a.removeAttribute(h.name) : a.setAttribute(h.name, l);
                    break;
                case o:
                    if (!a)continue;
                    l = this.getValue();
                    if (f || e && l === h["default"])h.name in c && c[h.name].remove(); else if (h.name in c)c[h.name].setAttribute("value", l); else {
                        var p = CKEDITOR.dom.element.createFromHtml("<cke:param></cke:param>", a.getDocument());
                        p.setAttributes({name: h.name, value: l});
                        1 > a.getChildCount() ? p.appendTo(a) : p.insertBefore(a.getFirst())
                    }
                    break;
                case i:
                    if (!b)continue;
                    l = this.getValue();
                    f || e && l === h["default"] ? b.removeAttribute(h.name) : b.setAttribute(h.name, l)
            }
        }
    }

    for (var g = 1, o = 2, i = 4, n = {id: [
        {type: g, name: "id"}
    ], classid: [
        {type: g,
            name: "classid"}
    ], codebase: [
        {type: g, name: "codebase"}
    ], pluginspage: [
        {type: i, name: "pluginspage"}
    ], src: [
        {type: o, name: "movie"},
        {type: i, name: "src"},
        {type: g, name: "data"}
    ], name: [
        {type: i, name: "name"}
    ], align: [
        {type: g, name: "align"}
    ], "class": [
        {type: g, name: "class"},
        {type: i, name: "class"}
    ], width: [
        {type: g, name: "width"},
        {type: i, name: "width"}
    ], height: [
        {type: g, name: "height"},
        {type: i, name: "height"}
    ], hSpace: [
        {type: g, name: "hSpace"},
        {type: i, name: "hSpace"}
    ], vSpace: [
        {type: g, name: "vSpace"},
        {type: i, name: "vSpace"}
    ], style: [
        {type: g,
            name: "style"},
        {type: i, name: "style"}
    ], type: [
        {type: i, name: "type"}
    ]}, m = "play loop menu quality scale salign wmode bgcolor base flashvars allowScriptAccess allowFullScreen".split(" "), j = 0; j < m.length; j++)n[m[j]] = [
        {type: i, name: m[j]},
        {type: o, name: m[j]}
    ];
    m = ["allowFullScreen", "play", "loop", "menu"];
    for (j = 0; j < m.length; j++)n[m[j]][0]["default"] = n[m[j]][1]["default"] = !0;
    CKEDITOR.dialog.add("flash", function (a) {
        var g = !a.config.flashEmbedTagOnly, i = a.config.flashAddEmbedTag || a.config.flashEmbedTagOnly, k, f = "<div>" +
            CKEDITOR.tools.htmlEncode(a.lang.common.preview) + '<br><div id="cke_FlashPreviewLoader' + CKEDITOR.tools.getNextNumber() + '" style="display:none"><div class="loading">&nbsp;</div></div><div id="cke_FlashPreviewBox' + CKEDITOR.tools.getNextNumber() + '" class="FlashPreviewBox"></div></div>';
        return{title: a.lang.flash.title, minWidth: 420, minHeight: 310, onShow: function () {
            this.fakeImage = this.objectNode = this.embedNode = null;
            k = new CKEDITOR.dom.element("embed", a.document);
            var e = this.getSelectedElement();
            if (e && e.data("cke-real-element-type") &&
                "flash" == e.data("cke-real-element-type")) {
                this.fakeImage = e;
                var d = a.restoreRealElement(e), h = null, b = null, c = {};
                if ("cke:object" == d.getName()) {
                    h = d;
                    d = h.getElementsByTag("embed", "cke");
                    0 < d.count() && (b = d.getItem(0));
                    for (var d = h.getElementsByTag("param", "cke"), g = 0, i = d.count(); g < i; g++) {
                        var f = d.getItem(g), j = f.getAttribute("name"), f = f.getAttribute("value");
                        c[j] = f
                    }
                } else"cke:embed" == d.getName() && (b = d);
                this.objectNode = h;
                this.embedNode = b;
                this.setupContent(h, b, c, e)
            }
        }, onOk: function () {
            var e = null, d = null, b = null;
            if (this.fakeImage)e =
                this.objectNode, d = this.embedNode; else if (g && (e = CKEDITOR.dom.element.createFromHtml("<cke:object></cke:object>", a.document), e.setAttributes({classid: "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", codebase: "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"})), i)d = CKEDITOR.dom.element.createFromHtml("<cke:embed></cke:embed>", a.document), d.setAttributes({type: "application/x-shockwave-flash", pluginspage: "http://www.macromedia.com/go/getflashplayer"}), e && d.appendTo(e);
            if (e)for (var b = {}, c = e.getElementsByTag("param", "cke"), f = 0, j = c.count(); f < j; f++)b[c.getItem(f).getAttribute("name")] = c.getItem(f);
            c = {};
            f = {};
            this.commitContent(e, d, b, c, f);
            e = a.createFakeElement(e || d, "cke_flash", "flash", !0);
            e.setAttributes(f);
            e.setStyles(c);
            this.fakeImage ? (e.replace(this.fakeImage), a.getSelection().selectElement(e)) : a.insertElement(e)
        }, onHide: function () {
            this.preview && this.preview.setHtml("")
        }, contents: [
            {id: "info", label: a.lang.common.generalTab, accessKey: "I", elements: [
                {type: "vbox", padding: 0,
                    children: [
                        {type: "hbox", widths: ["280px", "110px"], align: "right", children: [
                            {id: "src", type: "text", label: a.lang.common.url, required: !0, validate: CKEDITOR.dialog.validate.notEmpty(a.lang.flash.validateSrc), setup: b, commit: c, onLoad: function () {
                                var a = this.getDialog(), b = function (b) {
                                    k.setAttribute("src", b);
                                    a.preview.setHtml('<embed height="100%" width="100%" src="' + CKEDITOR.tools.htmlEncode(k.getAttribute("src")) + '" type="application/x-shockwave-flash"></embed>')
                                };
                                a.preview = a.getContentElement("info", "preview").getElement().getChild(3);
                                this.on("change", function (a) {
                                    a.data && a.data.value && b(a.data.value)
                                });
                                this.getInputElement().on("change", function () {
                                    b(this.getValue())
                                }, this)
                            }},
                            {type: "button", id: "browse", filebrowser: "info:src", hidden: !0, style: "display:inline-block;margin-top:10px;", label: a.lang.common.browseServer}
                        ]}
                    ]},
                {type: "hbox", widths: ["25%", "25%", "25%", "25%", "25%"], children: [
                    {type: "text", id: "width", requiredContent: "embed[width]", style: "width:95px", label: a.lang.common.width, validate: CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace("%1",
                        a.lang.common.width)), setup: b, commit: c},
                    {type: "text", id: "height", requiredContent: "embed[height]", style: "width:95px", label: a.lang.common.height, validate: CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace("%1", a.lang.common.height)), setup: b, commit: c},
                    {type: "text", id: "hSpace", requiredContent: "embed[hspace]", style: "width:95px", label: a.lang.flash.hSpace, validate: CKEDITOR.dialog.validate.integer(a.lang.flash.validateHSpace), setup: b, commit: c},
                    {type: "text", id: "vSpace", requiredContent: "embed[vspace]",
                        style: "width:95px", label: a.lang.flash.vSpace, validate: CKEDITOR.dialog.validate.integer(a.lang.flash.validateVSpace), setup: b, commit: c}
                ]},
                {type: "vbox", children: [
                    {type: "html", id: "preview", style: "width:95%;", html: f}
                ]}
            ]},
            {id: "Upload", hidden: !0, filebrowser: "uploadButton", label: a.lang.common.upload, elements: [
                {type: "file", id: "upload", label: a.lang.common.upload, size: 38},
                {type: "fileButton", id: "uploadButton", label: a.lang.common.uploadSubmit, filebrowser: "info:src", "for": ["Upload", "upload"]}
            ]},
            {id: "properties",
                label: a.lang.flash.propertiesTab, elements: [
                {type: "hbox", widths: ["50%", "50%"], children: [
                    {id: "scale", type: "select", requiredContent: "embed[scale]", label: a.lang.flash.scale, "default": "", style: "width : 100%;", items: [
                        [a.lang.common.notSet, ""],
                        [a.lang.flash.scaleAll, "showall"],
                        [a.lang.flash.scaleNoBorder, "noborder"],
                        [a.lang.flash.scaleFit, "exactfit"]
                    ], setup: b, commit: c},
                    {id: "allowScriptAccess", type: "select", requiredContent: "embed[allowscriptaccess]", label: a.lang.flash.access, "default": "", style: "width : 100%;",
                        items: [
                            [a.lang.common.notSet, ""],
                            [a.lang.flash.accessAlways, "always"],
                            [a.lang.flash.accessSameDomain, "samedomain"],
                            [a.lang.flash.accessNever, "never"]
                        ], setup: b, commit: c}
                ]},
                {type: "hbox", widths: ["50%", "50%"], children: [
                    {id: "wmode", type: "select", requiredContent: "embed[wmode]", label: a.lang.flash.windowMode, "default": "", style: "width : 100%;", items: [
                        [a.lang.common.notSet, ""],
                        [a.lang.flash.windowModeWindow, "window"],
                        [a.lang.flash.windowModeOpaque, "opaque"],
                        [a.lang.flash.windowModeTransparent, "transparent"]
                    ],
                        setup: b, commit: c},
                    {id: "quality", type: "select", requiredContent: "embed[quality]", label: a.lang.flash.quality, "default": "high", style: "width : 100%;", items: [
                        [a.lang.common.notSet, ""],
                        [a.lang.flash.qualityBest, "best"],
                        [a.lang.flash.qualityHigh, "high"],
                        [a.lang.flash.qualityAutoHigh, "autohigh"],
                        [a.lang.flash.qualityMedium, "medium"],
                        [a.lang.flash.qualityAutoLow, "autolow"],
                        [a.lang.flash.qualityLow, "low"]
                    ], setup: b, commit: c}
                ]},
                {type: "hbox", widths: ["50%", "50%"], children: [
                    {id: "align", type: "select", requiredContent: "object[align]",
                        label: a.lang.common.align, "default": "", style: "width : 100%;", items: [
                        [a.lang.common.notSet, ""],
                        [a.lang.common.alignLeft, "left"],
                        [a.lang.flash.alignAbsBottom, "absBottom"],
                        [a.lang.flash.alignAbsMiddle, "absMiddle"],
                        [a.lang.flash.alignBaseline, "baseline"],
                        [a.lang.common.alignBottom, "bottom"],
                        [a.lang.common.alignMiddle, "middle"],
                        [a.lang.common.alignRight, "right"],
                        [a.lang.flash.alignTextTop, "textTop"],
                        [a.lang.common.alignTop, "top"]
                    ], setup: b, commit: function (a, b, f, g, i) {
                        var j = this.getValue();
                        c.apply(this, arguments);
                        j && (i.align = j)
                    }},
                    {type: "html", html: "<div></div>"}
                ]},
                {type: "fieldset", label: CKEDITOR.tools.htmlEncode(a.lang.flash.flashvars), children: [
                    {type: "vbox", padding: 0, children: [
                        {type: "checkbox", id: "menu", label: a.lang.flash.chkMenu, "default": !0, setup: b, commit: c},
                        {type: "checkbox", id: "play", label: a.lang.flash.chkPlay, "default": !0, setup: b, commit: c},
                        {type: "checkbox", id: "loop", label: a.lang.flash.chkLoop, "default": !0, setup: b, commit: c},
                        {type: "checkbox", id: "allowFullScreen", label: a.lang.flash.chkFull, "default": !0,
                            setup: b, commit: c}
                    ]}
                ]}
            ]},
            {id: "advanced", label: a.lang.common.advancedTab, elements: [
                {type: "hbox", children: [
                    {type: "text", id: "id", requiredContent: "object[id]", label: a.lang.common.id, setup: b, commit: c}
                ]},
                {type: "hbox", widths: ["45%", "55%"], children: [
                    {type: "text", id: "bgcolor", requiredContent: "embed[bgcolor]", label: a.lang.flash.bgcolor, setup: b, commit: c},
                    {type: "text", id: "class", requiredContent: "embed(cke-xyz)", label: a.lang.common.cssClass, setup: b, commit: c}
                ]},
                {type: "text", id: "style", requiredContent: "embed{cke-xyz}",
                    validate: CKEDITOR.dialog.validate.inlineStyle(a.lang.common.invalidInlineStyle), label: a.lang.common.cssStyle, setup: b, commit: c}
            ]}
        ]}
    })
})();